package com.wecheir.service.impl;

import com.wecheir.dao.LoginDataDao;
import com.wecheir.entity.LoginData;
import com.wecheir.entity.User;
import com.wecheir.entity.vo.LoginEchats;
import com.wecheir.service.LoginDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;


/**
 * 信誉度计算service实现层
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class LoginDataServiceImpl implements LoginDataService {

    @Resource
    LoginDataDao loginDataDao;

    public List<LoginEchats> getLoginDataEcharts(String id) {
        return loginDataDao.getLoginDataEcharts(id);
    }

    public int updateLoginDataOnlyIsAccount(LoginData loginData) {
        loginData.setIs_account(true);
        return loginDataDao.updateLoginDataOnlyIsAccount(loginData);
    }

    public List<LoginData> getLoginDataWthOutCount(String userId) {
        return loginDataDao.getLoginDataWthOutCount(userId);
    }

    /**
     * 登录时保存访问的数据
     * @param loginData
     */
//    public int saveLoginData(LoginData loginData) {
//        loginData.setUserId(MySysUser.id());
//        loginData.setCreateId(MySysUser.id());
//        loginData.setUpdateId(MySysUser.id());
//        loginData.setUnsafeLogout(false);//正常登录,未安全退出
//        loginData.setAccount(false);
//        return baseMapper.insertLoginDataWithResult(loginData);
//    }

    public int saveLoginDataWithOutLastLogin(LoginData loginData, User user) {
        if (null==loginData){
            loginData=new LoginData();
        }
        loginData.setUserId(user.getId());
        loginData.setCreateId(user.getId());
        loginData.setUpdateId(user.getId());
        loginData.setIs_unsafe_logout(false);//正常登录,未安全退出
        loginData.setIs_account(false);
        return loginDataDao.insertLoginDataWithResult(loginData);
    }

    /**
     * 更新登录后的数据
     * @param loginData
     */
//    public void updateLoginDataOnlyIsSafeLogout(LoginData loginData) {
////        QueryWrapper<LoginData> wrapper = new QueryWrapper<>();
////        wrapper.eq("is_unsafe_logout",true);
//        loginData.setUnsafeLogout(true);
//        baseMapper.updateById(loginData);
////        /baseMapper.updateById(loginData);
//    }

//    public void updateLoginDataOnlyRepeatRefresh(LoginData loginData) {
//        loginData.setRepeatedRefresh(loginData.getRepeatedRefresh()+1);
//        baseMapper.updateById(loginData);
//    }
//
//    public void updateLoginDataOnlyUnLogin(LoginData loginData) {
//        loginData.setUnlogin(loginData.getUnlogin()+1);
//        baseMapper.updateById(loginData);
//    }

//    public LoginData getLoginDataById(String id) {
//        return baseMapper.selectById(id);
//    }

    /**
     * 得到上一次登录系统后的操作数据
     * @param userId
     * @return
     */
    public LoginData getLastDataByUserId(String userId) {
        return loginDataDao.getLastDataByUserId(userId);
    }

    @Override
    public void updateLoginDataOnlyUnLogin(LoginData loginDataLast) {

    }

    @Override
    public void addLoginData(User user) {
        LoginData loginData = new LoginData();
        loginData.setId(UUID.randomUUID().toString().replace("-", "").toLowerCase());
        loginData.setUserId(user.getId());
        loginData.setCreateId(user.getId());
        loginDataDao.insert(loginData);
    }

    /**
     * 更新这一次登录的数据,重复登录次数,重复刷新次数,越权访问次数,未安全退出次数
     * @param loginData
     * @return
     */
//    public int updateLoginData(LoginData loginData) {
//        return baseMapper.updateLoginDataNew(loginData);
//    }
//
//    public int updateLoginDataBeforeLogin(LoginData loginData) {
//        return baseMapper.updateLoginDataBeforeLogin(loginData);
//    }

//    /**
//     * 获得同一农田名字的数目
//     * @param name
//     * @return
//     */
//    @Override
//    public long getLoginDataNameCount(String name) {
//        QueryWrapper<LoginData> wrapper = new QueryWrapper<>();
//        wrapper.eq("name",name);
//        return baseMapper.selectCount(wrapper);
//    }
//
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public LoginData saveLoginData(LoginData LoginData) {
//        baseMapper.insert(LoginData);
//        return LoginData;
//    }
//
//
//    @Override
//    public LoginData getLoginDataById(String id) {
//        return baseMapper.selectLoginDataById(id);
//    }
//
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public void updateLoginData(LoginData LoginData) {
//        baseMapper.updateById(LoginData);
//    }
//
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public void deleteLoginData(LoginData LoginData) {
//        LoginData.setDelFlag(true);
//        baseMapper.updateById(LoginData);
//
//    }
//
//    @Override
//    public List<LoginData> selectAll() {
//        QueryWrapper wrapper = new QueryWrapper();
////        wrapper.eq("del_flag",false);
//        return baseMapper.selectList(wrapper);
//    }
//
//    @Override
//    public List<LoginData> getLoginDataByUserId(String userId) {
//        return baseMapper.getLoginDataByUserId(userId);
//    }
}
